﻿// 麻省理工学院许可证
//
// 版权所有 (c) 2021-2023 zuohuaijun，大名科技（天津）有限公司  联系电话/微信：18020030720  QQ：515096995
//
// 特此免费授予获得本软件的任何人以处理本软件的权利，但须遵守以下条件：在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
//
// 软件按“原样”提供，不提供任何形式的明示或暗示的保证，包括但不限于对适销性、适用性和非侵权的保证。
// 在任何情况下，作者或版权持有人均不对任何索赔、损害或其他责任负责，无论是因合同、侵权或其他方式引起的，与软件或其使用或其他交易有关。

using Admin.NET.Application.Entity;
using Furion.DatabaseAccessor;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.SemanticSemproxySearchResponse.Types;

namespace Admin.NET.Core.Service;

/// <summary>
/// 组态设计扩展步骤服务
/// </summary>
public class BardDesignDetailService : ITransient
{
    private readonly SqlSugarRepository<BoardDisplayDesignDetail> _boardDesignDetailService;

    public BardDesignDetailService(SqlSugarRepository<BoardDisplayDesignDetail> boardDesignDetailService)
    {
        _boardDesignDetailService = boardDesignDetailService;
    }

    /// <summary>
    /// 获取组态设计详情
    /// </summary>
    /// <param name="bookid"></param>
    /// <returns></returns>
    public async Task<List<BoardDisplayDesignDetail>> GetDesignExtStepList(long mainid)
    {
        return await _boardDesignDetailService.GetListAsync(u => u.MainID == mainid);
    }

    /// <summary>
    /// 更新组态设计详情
    /// </summary>
    /// <param name="bookid"></param>
    /// <param name="extStepList"></param>
    /// <returns></returns>
    [UnitOfWork]
    public async Task UpdateBoardDesignDetail(long bookid, List<BoardDisplayDesignDetail> extStepList)
    {
        await _boardDesignDetailService.DeleteAsync(u => u.MainID == bookid);

        if (extStepList == null || extStepList.Count < 1) return;
        extStepList.ForEach(u =>
        {
            u.MainID = bookid;
        });
        await _boardDesignDetailService.InsertRangeAsync(extStepList);
    }

    /// <summary>
    /// 根据组态设计详情ID删除详情
    /// </summary>
    /// <param name="orgIdList"></param>
    /// <returns></returns>
    public async Task DeleteCookBookExtStepList(List<long> extStepIdList)
    {
        await _boardDesignDetailService.DeleteAsync(u => extStepIdList.Contains(u.Id));
    }

    /// <summary>
    /// 根据组态设计ID删除详情
    /// </summary>
    /// <param name="mainid"></param>
    /// <returns></returns>
    public async Task DeleteCookBookExtStepByMainId(long mainid)
    {
        await _boardDesignDetailService.DeleteAsync(u => u.MainID == mainid);
    }

}